// 1. 末位无进位，则末位加 1 即可，前面也不可能产生进位 如 45 => 46
// 2. 末位有进位，在中间位置进位停止，则需要找到进位的典型标志，即为当前位，后为 0，
// 则前一位加 1，直到不为 0 为止，如 499 => 500
// 3. 末位有进位，并且一直进位到最前方导致结果多出一位，需要在第二种情况下遍历结束的基础上，进行单
// 独处理，如 999 => 1000

var plusOne = function (digits) {
  const len = digits.length;
  for (let i = len - 1; i >= 0; i--) {
    digits[i]++;
    digits[i] %= 10;
    if (digits[i] != 0) return digits;
  }
  digits = [...Array(len + 1)].map((_) => 0);
  digits[0] = 1;
  return digits;
};
